import java.util.ArrayList;
import java.util.Scanner;
public class A40{
    public static void main(String[] args){
        //1.创建字符串集合,数字集合,字符集合,并遍历(格式为[,,])
        ArrayList<String> list = new ArrayList<>();
        list.add("吃饭了吗?");
        list.add("睡觉了吗?");
        list.add("散步了吗?");
        System.out.print("[");
        for(int i = 0;i < list.size();i++){
            if(i == list.size()-1){
                System.out.println(list.get(i)+"]");
            }else{
                System.out.print(list.get(i)+",");
            }
        }
        ArrayList<Integer> list1 = new ArrayList<>();
        list1.add(1);
        list1.add(2);
        list1.add(3);
        System.out.println(list1);
        ArrayList<Character> list2 = new ArrayList<>();
        list2.add('a');
        list2.add('b');
        list2.add('c');
        System.out.println(list2);
        //2.定义一个集合,添加一些学生对象(学生类的属性是姓名,年龄),并进行遍历
        ArrayList<Student> list3 = new ArrayList<>();
        Student s1 = new Student("张三", 18);
        Student s2 = new Student("李四", 19);
        Student s3 = new Student("王五", 20);
        list3.add(s1);
        list3.add(s2);
        list3.add(s3);
        System.out.println(list3);//这里打印的是地址值
        for(int i = 0;i < list3.size();i++){
            System.out.println(list3.get(i));//这里打印的还是地址值
        }
        for(int i = 0;i < list3.size();i++){
            System.out.println("姓名:"+list3.get(i).getName()+" 年龄:"+list3.get(i).getAge());//这里打印的才是对象的属性值
        }
        //3.定义一个集合,添加一些学生对象(学生类的属性是姓名,年龄)(学生对象来自键盘录入),并进行遍历
        //注意:
        //ArrayList<Student> list4 = new ArrayList<>();
        //for(int i = 0;i < list4.size();i++){
        //      Student s = new Student();
        //      list.add(s);
        // }
        //System.out.println(list4.size());//0
        //上面这段代码错误,因为list4可伸缩,最开始list4集合中,没有元素,所以list4.size()返回0,i < 0,所以不会执行循环体
        ArrayList<Student> list4 = new ArrayList<>();
        Scanner sc = new Scanner(System.in);
        for(int i = 0;i < 3;i++){
            System.out.println("请输入学生的姓名:");
            String name = sc.next();
            System.out.println("请输入学生的年龄:");
            int age = sc.nextInt();
            Student s = new Student(name, age); //这个不能放在外面,放在外面的话创建的三个学生对象的属性值都是最后一次录入的,
                                                // 因为s是引用类型,所以s指向的地址值是不变的,只是地址中的值发生了改变
                                                //所以要放在循环体中,每次循环都创建一个新的学生对象,并添加到集合中
            list4.add(s);
        }
        System.out.println(list4.size());//3
        for(int i = 0;i < list4.size();i++){
            System.out.println("姓名:"+list4.get(i).getName()+" 年龄:"+list4.get(i).getAge());
        }

        //4.在main方法中定义一个集合,存入三个用户对象
        //用户属性为:id,username,password
        //要求:定义一个方法,根据id查找对应的用户信息
        //能够同时实现:1.如果存在,返回true,如果不存在,返回false
        //             2.如果存在,返回位置索引,如果不存在,返回-1

        ArrayList<User> list5 = new ArrayList<>();
        User u1 = new User("heima001","zhangsan","123456");
        User u2 = new User("heima002","lisi","12345678");
        User u3 = new User("heima003","wangwu","123456zz");
        list5.add(u1);
        list5.add(u2);
        list5.add(u3);
        System.out.println("请输入您要查询的id");
        String findId = sc.next();
        //如果只看存不存在
        System.out.println(uerInfo1(list5,findId));
        //如果要看查询的详细信息
        int index = userInfo2(list5,findId);
        if(index >= 0){
            System.out.println("Id:"+list5.get(index).getId()+" 用户名:"+list5.get(index).getUsername()+" 密码:"+list5.get(index).getPassword());
        }else{
            System.out.println("您要查询的id不存在");
        }
    }
    public static boolean uerInfo1(ArrayList<User> list,String id){
        return userInfo2(list,id) >= 0;
    }
    public static int userInfo2(ArrayList<User> list,String id){
        for(int i = 0;i < list.size();i++){
            if(list.get(i).getId().equals(id)){
                return i;
            }
        }
        return -1;
    }
    static class User{
        private String id;
        private String username;
        private String password;
        public User() {
        }
        public User(String id, String username, String password) {
            this.id = id;
            this.username = username;
            this.password = password;
        }
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
    }
    static class Student{
        private String name;
        private int age;
        public Student(){}
        public Student(String name,int age){
            this.name = name;
            this.age = age;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
    }
}